package com.tongtech.space.common.utils.desensitize;

import lombok.extern.slf4j.Slf4j;

/**
 * 脱敏规则封装工具类
 * 对不同的实体类设置不同的脱敏方案
 * 
 * @author jinjiayu
 * @since 2021/4/12
 */
@Slf4j
public class DesensitizeUtil {

    /**
     * UserDemo脱敏规则封装-group1
     *
     * @param userDemo
     * @author jinjiayu
     */
//    public static void doRule(Object userDemo){
//        if (userDemo instanceof UserDemo) {
//            doUserDemoDesensitizeGroupOne(userDemo);
//        } else if (userDemo instanceof UserDemo) {
//            doUserDemoDesensitizeGroupOne(userDemo);
//        }
//
//    }

    /**
     * UserDemo脱敏规则封装-group1
     *
     * @param userDemo
     * @author jinjiayu
     */
    public static void doUserDemoDesensitizeGroupOne(UserDemo userDemo){
        AbstractDesensitizeWrapper<UserDemo, String> wrapper = new DesensitizeWrapperImpl<>(userDemo);
        wrapper.add(UserDemo::getName, DesensitizeWrapperImpl.NAME);
        wrapper.add(UserDemo::getCardId, DesensitizeWrapperImpl.CARD_ID);

        log.info("脱敏前:" + userDemo.toString());
        userDemo = wrapper.doDesensitize();
        log.info("脱敏后:" + userDemo.toString());
    }

    /**
     * UserDemo脱敏规则封装-group2
     *
     * @param userDemo
     * @author jinjiayu
     */
    public static void doUserDemoDesensitizeGroupTwo(UserDemo userDemo){
        AbstractDesensitizeWrapper<UserDemo, String> wrapper = new DesensitizeWrapperImpl<>(userDemo);
        wrapper.add(UserDemo::getMobile, DesensitizeWrapperImpl.MOBILE);
        wrapper.add(UserDemo::getUnicode, DesensitizeWrapperImpl.UNICODE);
        wrapper.add(UserDemo::getZiduan, DesensitizeWrapperImpl.ZIDUAN);

        log.info("脱敏前:" + userDemo.toString());
        userDemo = wrapper.doDesensitize();
        log.info("脱敏后:" + userDemo.toString());
    }

    // Todo 更多脱敏规则封装...

}
